package com.ruoyi.veterinary.domain;

import java.math.BigDecimal;
import java.util.Date;
import java.util.List;
import com.fasterxml.jackson.annotation.JsonFormat;
import org.apache.commons.lang3.builder.ToStringBuilder;
import org.apache.commons.lang3.builder.ToStringStyle;
import com.ruoyi.common.annotation.Excel;
import com.ruoyi.common.core.domain.BaseEntity;

/**
 * 账单管理对象 vet_bill
 * 
 * @author ruoyi
 * @date 2024-01-19
 */
public class VetBill extends BaseEntity
{
    private static final long serialVersionUID = 1L;

    /** 账单ID */
    private Long billId;

    /** 账单编号 */
    @Excel(name = "账单编号")
    private String billNo;

    /** 客户ID */
    @Excel(name = "客户ID")
    private Long customerId;

    /** 客户名称 */
    @Excel(name = "客户名称")
    private String customerName;

    /** 账单周期开始日期 */
    @JsonFormat(pattern = "yyyy-MM-dd")
    @Excel(name = "账单周期开始日期", width = 30, dateFormat = "yyyy-MM-dd")
    private Date billPeriodStart;

    /** 账单周期结束日期 */
    @JsonFormat(pattern = "yyyy-MM-dd")
    @Excel(name = "账单周期结束日期", width = 30, dateFormat = "yyyy-MM-dd")
    private Date billPeriodEnd;

    /** 总金额 */
    @Excel(name = "总金额")
    private BigDecimal totalAmount;

    /** 已付金额 */
    @Excel(name = "已付金额")
    private BigDecimal paidAmount;

    /** 未付金额 */
    @Excel(name = "未付金额")
    private BigDecimal unpaidAmount;

    /** 交易笔数 */
    @Excel(name = "交易笔数")
    private Integer transactionCount;

    /** 支付状态：未支付/部分支付/已逾期/已支付 */
    @Excel(name = "支付状态", readConverterExp = "未支付=未支付,部分支付=部分支付,已逾期=已逾期,已支付=已支付")
    private String paymentStatus;

    /** 应付日期 */
    @JsonFormat(pattern = "yyyy-MM-dd")
    @Excel(name = "应付日期", width = 30, dateFormat = "yyyy-MM-dd")
    private Date dueDate;

    /** 最早欠款日期 */
    @JsonFormat(pattern = "yyyy-MM-dd")
    @Excel(name = "最早欠款日期", width = 30, dateFormat = "yyyy-MM-dd")
    private Date earliestDebtDate;

    /** 催收记录（简单文字记录） */
    @Excel(name = "催收记录")
    private String collectionRecords;

    /** 账单明细列表 */
    /** 账单明细列表 */
    private List<VetBillDetail> billDetailList;

    /** 删除标志（0代表存在 2代表删除） */
    private String delFlag;

    public void setBillId(Long billId)
    {
        this.billId = billId;
    }

    public Long getBillId() 
    {
        return billId;
    }
    public void setBillNo(String billNo) 
    {
        this.billNo = billNo;
    }

    public String getBillNo() 
    {
        return billNo;
    }
    public void setCustomerId(Long customerId) 
    {
        this.customerId = customerId;
    }

    public Long getCustomerId() 
    {
        return customerId;
    }
    public void setCustomerName(String customerName) 
    {
        this.customerName = customerName;
    }

    public String getCustomerName() 
    {
        return customerName;
    }
    public void setBillPeriodStart(Date billPeriodStart) 
    {
        this.billPeriodStart = billPeriodStart;
    }

    public Date getBillPeriodStart() 
    {
        return billPeriodStart;
    }
    public void setBillPeriodEnd(Date billPeriodEnd) 
    {
        this.billPeriodEnd = billPeriodEnd;
    }

    public Date getBillPeriodEnd() 
    {
        return billPeriodEnd;
    }
    public void setTotalAmount(BigDecimal totalAmount) 
    {
        this.totalAmount = totalAmount;
    }

    public BigDecimal getTotalAmount() 
    {
        return totalAmount;
    }
    public void setPaidAmount(BigDecimal paidAmount) 
    {
        this.paidAmount = paidAmount;
    }

    public BigDecimal getPaidAmount() 
    {
        return paidAmount;
    }
    public void setUnpaidAmount(BigDecimal unpaidAmount) 
    {
        this.unpaidAmount = unpaidAmount;
    }

    public BigDecimal getUnpaidAmount() 
    {
        return unpaidAmount;
    }
    public void setTransactionCount(Integer transactionCount) 
    {
        this.transactionCount = transactionCount;
    }

    public Integer getTransactionCount() 
    {
        return transactionCount;
    }
    public void setPaymentStatus(String paymentStatus) 
    {
        this.paymentStatus = paymentStatus;
    }

    public String getPaymentStatus() 
    {
        return paymentStatus;
    }
    public void setDueDate(Date dueDate) 
    {
        this.dueDate = dueDate;
    }

    public Date getDueDate() 
    {
        return dueDate;
    }
    public void setEarliestDebtDate(Date earliestDebtDate) 
    {
        this.earliestDebtDate = earliestDebtDate;
    }

    public Date getEarliestDebtDate() 
    {
        return earliestDebtDate;
    }
    public void setCollectionRecords(String collectionRecords) 
    {
        this.collectionRecords = collectionRecords;
    }

    public String getCollectionRecords() 
    {
        return collectionRecords;
    }

    public List<VetBillDetail> getBillDetailList()
    {
        return billDetailList;
    }

    public void setBillDetailList(List<VetBillDetail> billDetailList)
    {
        this.billDetailList = billDetailList;
    }
    
    public void setDelFlag(String delFlag) 
    {
        this.delFlag = delFlag;
    }

    public String getDelFlag() 
    {
        return delFlag;
    }

    @Override
    public String toString() {
        return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE)
            .append("billId", getBillId())
            .append("billNo", getBillNo())
            .append("customerId", getCustomerId())
            .append("customerName", getCustomerName())
            .append("billPeriodStart", getBillPeriodStart())
            .append("billPeriodEnd", getBillPeriodEnd())
            .append("totalAmount", getTotalAmount())
            .append("paidAmount", getPaidAmount())
            .append("unpaidAmount", getUnpaidAmount())
            .append("transactionCount", getTransactionCount())
            .append("paymentStatus", getPaymentStatus())
            .append("dueDate", getDueDate())
            .append("earliestDebtDate", getEarliestDebtDate())
            .append("collectionRecords", getCollectionRecords())
            .append("createBy", getCreateBy())
            .append("createTime", getCreateTime())
            .append("updateBy", getUpdateBy())
            .append("updateTime", getUpdateTime())
            .toString();
    }
}